home *** CD-ROM | disk | FTP | other *** search
/ Aminet 48 / Aminet 48 (2002)(GTI - Schatztruhe)[!][Apr 2002].iso / Aminet / text / edit / vim60rt.lha / Vim / vim60 / syntax / idl.vim < prev    next >
Encoding:
Text File  |  2001-05-09  |  10.0 KB  |  204 lines

  1. " Vim syntax file
  2. " Language:    IDL (Interface Description Language)
  3. " Maintainer:    Jody Goldberg <jgoldberg@home.com>
  4. " Last Change:    2001 May 09
  5.  
  6. " This is an experiment.  IDL's structure is simple enough to permit a full
  7. " grammar based approach to rather than using a few heuristics.  The result
  8. " is large and somewhat repetative but seems to work.
  9.  
  10. " For version 5.x: Clear all syntax items
  11. " For version 6.x: Quit when a syntax file was already loaded
  12. if version < 600
  13.   syntax clear
  14. elseif exists("b:current_syntax")
  15.   finish
  16. endif
  17.  
  18. " Misc basic
  19. syn match    idlId        contained "[a-zA-Z][a-zA-Z0-9_]*"
  20. syn match    idlSemiColon    contained ";"
  21. syn match    idlCommaArg    contained ","            skipempty skipwhite nextgroup=idlSimpDecl
  22. syn region    idlArraySize1    contained start=:\[: end=:\]:    skipempty skipwhite nextgroup=idlArraySize1,idlSemiColon,idlCommaArg contains=idlArraySize1,idlLiteral
  23. syn match   idlSimpDecl     contained "[a-zA-Z][a-zA-Z0-9_]*"    skipempty skipwhite nextgroup=idlSemiColon,idlCommaArg,idlArraySize1
  24. syn region  idlSting     contained start=+"+  skip=+\\\(\\\\\)*"+  end=+"+
  25. syn match   idlLiteral     contained "[1-9]\d*\(\.\d*\)\="
  26. syn match   idlLiteral     contained "\.\d\+"
  27. syn keyword idlLiteral     contained TRUE FALSE
  28.  
  29. " Comments
  30. syn keyword idlTodo contained    TODO FIXME XXX
  31. syn region idlComment        start="/\*"  end="\*/" contains=idlTodo
  32. syn match  idlComment        "//.*" contains=idlTodo
  33. syn match  idlCommentError    "\*/"
  34.  
  35. " C style Preprocessor
  36. syn region idlIncluded contained start=+"+  skip=+\\\(\\\\\)*"+  end=+"+
  37. syn match  idlIncluded contained "<[^>]*>"
  38. syn match  idlInclude        "^[ \t]*#[ \t]*include\>[ \t]*["<]" contains=idlIncluded,idlString
  39. syn region idlPreCondit    start="^[ \t]*#[ \t]*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)"  skip="\\$"  end="$" contains=idlComment,idlCommentError
  40. syn region idlDefine    start="^[ \t]*#[ \t]*\(define\>\|undef\>\)" skip="\\$" end="$" contains=idlLiteral, idlString
  41.  
  42. " Constants
  43. syn keyword idlConst    const    skipempty skipwhite nextgroup=idlBaseType,idlBaseTypeInt
  44.  
  45. " Attribute
  46. syn keyword idlROAttr    readonly    skipempty skipwhite nextgroup=idlAttr
  47. syn keyword idlAttr    attribute    skipempty skipwhite nextgroup=idlBaseTypeInt,idlBaseType
  48.  
  49. " Types
  50. syn region  idlD4    contained start="<" end=">"    skipempty skipwhite nextgroup=idlSimpDecl    contains=idlSeqType,idlBaseTypeInt,idlBaseType,idlLiteral
  51. syn keyword idlSeqType    contained sequence        skipempty skipwhite nextgroup=idlD4
  52. syn keyword idlBaseType        contained    float double char boolean octet any    skipempty skipwhite nextgroup=idlSimpDecl
  53. syn keyword idlBaseTypeInt    contained    short long        skipempty skipwhite nextgroup=idlSimpDecl
  54. syn keyword idlBaseType        contained    unsigned        skipempty skipwhite nextgroup=idlBaseTypeInt
  55. syn region  idlD1        contained    start="<" end=">"    skipempty skipwhite nextgroup=idlSimpDecl    contains=idlString,idlLiteral
  56. syn keyword idlBaseType        contained    string    skipempty skipwhite nextgroup=idlD1,idlSimpDecl
  57. syn match   idlBaseType        contained    "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*"    skipempty skipwhite nextgroup=idlSimpDecl
  58.  
  59. " Modules
  60. syn region  idlModuleContent contained start="{" end="}"    skipempty skipwhite nextgroup=idlSemiColon contains=idlUnion,idlStruct,idlEnum,idlInterface,idlComment,idlTypedef,idlConst,idlException,idlModule
  61. syn match   idlModuleName contained    "[a-zA-Z0-9_]\+"    skipempty skipwhite nextgroup=idlModuleContent,idlSemiColon
  62. syn keyword idlModule            module            skipempty skipwhite nextgroup=idlModuleName
  63.  
  64. " Interfaces
  65. syn region  idlInterfaceContent contained start="{" end="}"    skipempty skipwhite nextgroup=idlSemiColon contains=idlUnion,idlStruct,idlEnum,idlComment,idlROAttr,idlAttr,idlOp,idlOneWayOp,idlException,idlConst,idlTypedef
  66. syn match   idlInheritFrom2 contained "," skipempty skipwhite nextgroup=idlInheritFrom
  67. syn match idlInheritFrom contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlInheritFrom2,idlInterfaceContent
  68. syn match idlInherit contained    ":"        skipempty skipwhite nextgroup=idlInheritFrom
  69. syn match   idlInterfaceName contained    "[a-zA-Z0-9_]\+"    skipempty skipwhite nextgroup=idlInterfaceContent,idlInherit,idlSemiColon
  70. syn keyword idlInterface        interface        skipempty skipwhite nextgroup=idlInterfaceName
  71.  
  72.  
  73. " Raises
  74. syn keyword idlRaises    contained raises    skipempty skipwhite nextgroup=idlRaises,idlContext,idlSemiColon
  75.  
  76. " Context
  77. syn keyword idlContext    contained context    skipempty skipwhite nextgroup=idlRaises,idlContext,idlSemiColon
  78.  
  79. " Operation
  80. syn match   idlParmList    contained "," skipempty skipwhite nextgroup=idlOpParms
  81. syn region  idlArraySize contained start="\[" end="\]"    skipempty skipwhite nextgroup=idlArraySize,idlParmList contains=idlArraySize,idlLiteral
  82. syn match   idlParmName contained "[a-zA-Z0-9_]\+"    skipempty skipwhite nextgroup=idlParmList,idlArraySize
  83. syn keyword idlParmInt    contained short long        skipempty skipwhite nextgroup=idlParmName
  84. syn keyword idlParmType    contained unsigned        skipempty skipwhite nextgroup=idlParmInt
  85. syn region  idlD3    contained start="<" end=">"    skipempty skipwhite nextgroup=idlParmName    contains=idlString,idlLiteral
  86. syn keyword idlParmType    contained string        skipempty skipwhite nextgroup=idlD3,idlParmName
  87. syn keyword idlParmType    contained void float double char boolean octet any      skipempty skipwhite nextgroup=idlParmName
  88. syn match   idlParmType    contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*" skipempty skipwhite nextgroup=idlParmName
  89. syn keyword idlOpParms    contained in out inout        skipempty skipwhite nextgroup=idlParmType
  90.  
  91. syn region idlOpContents contained start="(" end=")"    skipempty skipwhite nextgroup=idlRaises,idlContext,idlSemiColon contains=idlOpParms
  92. syn match   idlOpName   contained "[a-zA-Z0-9_]\+"    skipempty skipwhite nextgroup=idlOpContents
  93. syn keyword idlOpInt    contained short long        skipempty skipwhite nextgroup=idlOpName
  94. syn region  idlD2    contained start="<" end=">"    skipempty skipwhite nextgroup=idlOpName    contains=idlString,idlLiteral
  95. syn keyword idlOp    contained unsigned        skipempty skipwhite nextgroup=idlOpInt
  96. syn keyword idlOp    contained string        skipempty skipwhite nextgroup=idlD2,idlOpName
  97. syn keyword idlOp    contained void float double char boolean octet any        skipempty skipwhite nextgroup=idlOpName
  98. syn match   idlOp    contained "[a-zA-Z0-9_]\+[ \t]*\(::[ \t]*[a-zA-Z0-9_]\+\)*"    skipempty skipwhite nextgroup=idlOpName
  99. syn keyword idlOp    contained void            skipempty skipwhite nextgroup=idlOpName
  100. syn keyword idlOneWayOp    contained oneway        skipempty skipwhite nextgroup=idOp
  101.  
  102. " Enum
  103. syn region  idlEnumContents contained start="{" end="}"        skipempty skipwhite nextgroup=idlSemiColon, idlSimpDecl contains=idlId,idlComment
  104. syn match   idlEnumName contained    "[a-zA-Z0-9_]\+"    skipempty skipwhite nextgroup=idlEnumContents
  105. syn keyword idlEnum            enum            skipempty skipwhite nextgroup=idlEnumName
  106.  
  107. " Typedef
  108. syn keyword idlTypedef            typedef            skipempty skipwhite nextgroup=idlBaseType, idlBaseTypeInt, idlSeqType
  109.  
  110. " Struct
  111. syn region  idlStructContent contained start="{" end="}" skipempty skipwhite nextgroup=idlSemiColon, idlSimpDecl    contains=idlBaseType, idlBaseTypeInt, idlSeqType,idlComment, idlEnum, idlUnion
  112. syn match   idlStructName contained    "[a-zA-Z0-9_]\+" skipempty skipwhite nextgroup=idlStructContent
  113. syn keyword idlStruct            struct         skipempty skipwhite nextgroup=idlStructName
  114.  
  115. " Exception
  116. syn keyword idlException exception skipempty skipwhite nextgroup=idlStructName
  117.  
  118. " Union
  119. syn match   idlColon contained ":"    skipempty skipwhite nextgroup=idlCase,idlSeqType,idlBaseType,idlBaseTypeInt
  120. syn region  idlCaseLabel contained start="" skip="::" end=":"me=e-1    skipempty skipwhite nextgroup=idlColon contains=idlLiteral,idlString
  121. syn keyword idlCase        contained case                skipempty skipwhite nextgroup=idlCaseLabel
  122. syn keyword idlCase        contained default            skipempty skipwhite nextgroup=idlColon
  123. syn region  idlUnionContent    contained start="{" end="}"        skipempty skipwhite nextgroup=idlSemiColon,idlSimpDecl    contains=idlCase
  124. syn region  idlSwitchType    contained start="(" end=")"        skipempty skipwhite nextgroup=idlUnionContent
  125. syn keyword idlUnionSwitch    contained switch            skipempty skipwhite nextgroup=idlSwitchType
  126. syn match   idlUnionName    contained "[a-zA-Z0-9_]\+"        skipempty skipwhite nextgroup=idlUnionSwitch
  127. syn keyword idlUnion        union                skipempty skipwhite nextgroup=idlUnionName
  128.  
  129. syn sync lines=200
  130.  
  131. " Define the default highlighting.
  132. " For version 5.7 and earlier: only when not done already
  133. " For version 5.8 and later: only when an item doesn't have highlighting yet
  134. if version >= 508 || !exists("did_idl_syntax_inits")
  135.   if version < 508
  136.     let did_idl_syntax_inits = 1
  137.     command -nargs=+ HiLink hi link <args>
  138.   else
  139.     command -nargs=+ HiLink hi def link <args>
  140.   endif
  141.  
  142.   HiLink idlInclude        Include
  143.   HiLink idlPreProc        PreProc
  144.   HiLink idlPreCondit        PreCondit
  145.   HiLink idlDefine        Macro
  146.   HiLink idlIncluded        String
  147.   HiLink idlString        String
  148.   HiLink idlComment        Comment
  149.   HiLink idlTodo        Todo
  150.   HiLink idlLiteral        Number
  151.  
  152.   HiLink idlModule        Keyword
  153.   HiLink idlInterface        Keyword
  154.   HiLink idlEnum        Keyword
  155.   HiLink idlStruct        Keyword
  156.   HiLink idlUnion        Keyword
  157.   HiLink idlTypedef        Keyword
  158.   HiLink idlException        Keyword
  159.  
  160.   HiLink idlModuleName        Typedef
  161.   HiLink idlInterfaceName    Typedef
  162.   HiLink idlEnumName        Typedef
  163.   HiLink idlStructName        Typedef
  164.   HiLink idlUnionName        Typedef
  165.  
  166.   HiLink idlBaseTypeInt        idlType
  167.   HiLink idlBaseType        idlType
  168.   HiLink idlSeqType        idlType
  169.   HiLink idlD1            Paren
  170.   HiLink idlD2            Paren
  171.   HiLink idlD3            Paren
  172.   HiLink idlD4            Paren
  173.   "HiLink idlArraySize        Paren
  174.   "HiLink idlArraySize1        Paren
  175.   HiLink idlModuleContent    Paren
  176.   HiLink idlUnionContent    Paren
  177.   HiLink idlStructContent    Paren
  178.   HiLink idlEnumContents    Paren
  179.   HiLink idlInterfaceContent    Paren
  180.  
  181.   HiLink idlSimpDecl        Identifier
  182.   HiLink idlROAttr        StorageClass
  183.   HiLink idlAttr        Keyword
  184.   HiLink idlConst        StorageClass
  185.  
  186.   HiLink idlOneWayOp        StorageClass
  187.   HiLink idlOp            idlType
  188.   HiLink idlParmType        idlType
  189.   HiLink idlOpName        Function
  190.   HiLink idlOpParms        StorageClass
  191.   HiLink idlParmName        Identifier
  192.   HiLink idlInheritFrom        Identifier
  193.  
  194.   HiLink idlId            Constant
  195.   "HiLink idlCase        Keyword
  196.   HiLink idlCaseLabel        Constant
  197.  
  198.   delcommand HiLink
  199. endif
  200.  
  201. let b:current_syntax = "idl"
  202.  
  203. " vim: ts=8
  204.